/*
 * GameObject.h
 *
 *  Created on: 10/01/2011
 *      Author: Nenem
 */

#ifndef GAMEOBJECT_H_
#define GAMEOBJECT_H_

#include "Model.h"
#include "Controller.h"
#include "ControllerInput.h"
#include "View.h"
#include "StateMachine.h"
#include "State.h"
#include "ResourceManager.h"
#include "AttackView.h"
#include "NormalView.h"
#include "ConversationView.h"

#include <iostream>
using namespace std;

class GameObject {
private:
	int objID;

	static int nextValidID;

	bool kill;
public:
	StateMachine<GameObject> *stateMachine;

	State<GameObject>* stateHitted;
	State<GameObject>* stateIdle;
	State<GameObject>* stateAttack;
	State<GameObject>* stateRun;
	State<GameObject>* stateWalk;
	State<GameObject>* stateListen;
	State<GameObject>* stateTalk;
	State<GameObject>* stateSteped;
    Model *model;
    View *view;
    Controller *controller;
    ResourceManager *resource;
    GameObject(int ID);
    virtual ~GameObject();
    bool getKill() const
    {
        return kill;
    }

    void setKill(bool kill)
    {
        this->kill = kill;
    }

    int getObjID() const
    {
        return objID;
    }

    void setObjID(int objID)
    {
        this->objID = objID;
    }

};

#endif /* GAMEOBJECT_H_ */
